const express = require('express');
const router = express.Router();
const axios = require('axios');
const multer = require('multer');
const path = require('path');
const fs = require('fs-extra');

// JWT验证中间件
const verifyToken = (req, res, next) => {
  const token = req.headers.authorization;
  if (!token) {
    return res.status(401).json({
      success: false,
      message: '未提供访问令牌'
    });
  }

  try {
    // 移除Bearer前缀
    const actualToken = token.startsWith('Bearer ') ? token.slice(7) : token;
    
    // 这里可以添加JWT验证逻辑
    // 暂时简单检查token是否存在
    if (!actualToken) {
      return res.status(401).json({
        success: false,
        message: '无效的访问令牌'
      });
    }
    
    next();
  } catch (error) {
    return res.status(401).json({
      success: false,
      message: '令牌验证失败'
    });
  }
};

// 配置multer用于文件上传
const storage = multer.diskStorage({
  destination: function (req, file, cb) {
    const uploadDir = path.join(__dirname, '../uploads');
    fs.ensureDirSync(uploadDir);
    cb(null, uploadDir);
  },
  filename: function (req, file, cb) {
    const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9);
    cb(null, file.fieldname + '-' + uniqueSuffix + path.extname(file.originalname));
  }
});

const upload = multer({ 
  storage: storage,
  limits: {
    fileSize: 10 * 1024 * 1024 // 10MB限制
  },
  fileFilter: function (req, file, cb) {
    // 允许的文件类型
    const allowedTypes = /jpeg|jpg|png|gif|pdf|doc|docx|txt|md/;
    const extname = allowedTypes.test(path.extname(file.originalname).toLowerCase());
    const mimetype = allowedTypes.test(file.mimetype);
    
    if (mimetype && extname) {
      return cb(null, true);
    } else {
      cb(new Error('不支持的文件类型'));
    }
  }
});

// Dify API配置 - Chatflow
const DIFY_API_URL = process.env.DIFY_API_URL || 'http://127.0.0.1/v1';
const DIFY_APP_ID = process.env.DIFY_APP_ID || 'vKisALZl7SmxNc3B'; // 从公开URL中提取的App ID
const DIFY_API_KEY = process.env.DIFY_API_KEY || '';

console.log('=== Dify配置信息 ===');
console.log(`API URL: ${DIFY_API_URL}`);
console.log(`App ID: ${DIFY_APP_ID}`);
console.log(`API密钥: ${DIFY_API_KEY ? '已配置' : '未配置'}`);
if (DIFY_API_KEY) {
  console.log(`API密钥前10位: ${DIFY_API_KEY.substring(0, 10)}...`);
}

// 创建axios实例
const difyClient = axios.create({
  baseURL: DIFY_API_URL,
  timeout: 200000, // 增加到60秒，因为AI生成可能需要更长时间
  headers: {
    'Content-Type': 'application/json'
  }
});

// 如果有API密钥，添加认证头
if (DIFY_API_KEY) {
  difyClient.defaults.headers.common['Authorization'] = `Bearer ${DIFY_API_KEY}`;
  console.log('✅ 已设置API认证头');
} else {
  console.log('⚠️  未设置API认证头，Dify API调用将失败');
}

// 调用Dify Chatflow API
async function callDifyWorkflow(inputs) {
  try {
    console.log('=== 开始调用Dify Chatflow API ===');
    console.log(`Dify API URL: ${DIFY_API_URL}`);
    console.log(`Dify App ID: ${DIFY_APP_ID}`);
    console.log('原始输入参数:', JSON.stringify(inputs, null, 2));
    
    // Chatflow API参数格式
    const requestData = {
      inputs: {
        title: inputs.title || inputs.requirements || '教育文档生成'
      },
      query: inputs.requirements || inputs.query || '',
      response_mode: 'blocking',
      user: 'document-generator'
    };
    
    console.log('发送到Dify Chatflow的数据:', JSON.stringify(requestData, null, 2));
    console.log(`完整API地址: ${DIFY_API_URL}/chat-messages`);
    
    // Chatflow使用 /chat-messages 端点，但需要正确的参数格式
    const response = await difyClient.post('/chat-messages', {
      inputs: requestData.inputs,
      query: requestData.query,
      response_mode: requestData.response_mode,
      user: requestData.user
    });
    
    console.log('Dify Chatflow API调用成功');
    console.log('Dify返回数据:', JSON.stringify(response.data, null, 2));
    
    // 处理Chatflow返回的数据格式
    if (response.data && response.data.answer) {
      return {
        success: true,
        answer: response.data.answer,
        data: response.data,
        files: response.data.files || []
      };
    } else if (response.data && response.data.message) {
      return {
        success: true,
        answer: response.data.message,
        data: response.data,
        files: response.data.files || []
      };
    } else if (response.data && response.data.data) {
      return {
        success: true,
        answer: response.data.data,
        data: response.data,
        files: response.data.files || []
      };
    } else {
      console.log('Dify Chatflow返回数据格式异常，使用备用方案');
      return generateMockDocument(inputs);
    }
  } catch (error) {
    console.error('=== Dify Chatflow API调用失败 ===');
    console.error('错误类型:', error.constructor.name);
    console.error('错误消息:', error.message);
    
    if (error.code === 'ECONNREFUSED') {
      console.log('❌ Dify服务未启动，使用备用方案');
    } else if (error.response?.status === 404) {
      console.log('❌ Dify Chatflow API路径不存在，使用备用方案');
      console.log('响应状态:', error.response.status);
      console.log('响应数据:', error.response.data);
      console.log('请检查以下配置：');
      console.log('1. Dify服务是否正在运行');
      console.log('2. API地址是否正确:', DIFY_API_URL);
      console.log('3. App ID是否正确:', DIFY_APP_ID);
      console.log('4. Chatflow是否已发布');
    } else if (error.response?.status === 401) {
      console.log('❌ Dify Chatflow API认证失败，使用备用方案');
      console.log('响应状态:', error.response.status);
      console.log('响应数据:', error.response.data);
      console.log('请检查以下配置：');
      console.log('1. Dify API密钥是否正确设置');
      console.log('2. API密钥是否有效');
      console.log('3. 环境变量DIFY_API_KEY是否配置');
    } else if (error.response?.status === 400) {
      console.log('❌ Dify Chatflow API请求参数错误，使用备用方案');
      console.log('响应状态:', error.response.status);
      console.log('响应数据:', error.response.data);
    } else {
      console.log('❌ Dify Chatflow API其他错误，使用备用方案');
      if (error.response) {
        console.log('响应状态:', error.response.status);
        console.log('响应数据:', error.response.data);
      }
    }
    
    // 如果Dify API不可用，返回错误信息而不是模拟文档
    return {
      success: false,
      message: `Dify API调用失败: ${error.message}`,
      error: error.response?.data || error.message
    };
  }
}

// 生成模拟文档（当Dify API不可用时使用）
function generateMockDocument(inputs) {
  const { title, subject, grade, docType, requirements } = inputs;
  
  let mockDocument = '';
  
  switch (docType) {
    case 'course_outline':
      mockDocument = `# ${title}

## 课程概述
本课程旨在帮助学生掌握${subject}的基础知识和核心概念，培养分析思维和实践能力。

## 教学目标
- 掌握${subject}基础概念和原理
- 培养逻辑思维和分析能力
- 提升实践操作和问题解决能力
- 建立学科知识体系

## 课程安排
1. 第一周：基础理论（${subject}基本概念）
2. 第二周：核心内容（重点知识点讲解）
3. 第三周：实践应用（案例分析和练习）
4. 第四周：综合复习（知识整合和总结）

## 考核方式
- 平时作业：30%
- 期中考试：30%
- 期末考试：40%

## 参考资料
- 教材：《${subject}教材》
- 网络资源：相关学习网站
- 实践材料：实验指导书`;
      break;
      
    case 'lesson_plan':
      mockDocument = `# ${title}

## 教学目标
通过本节课的学习，学生能够：
- 理解${subject}的核心概念
- 掌握相关的基本技能
- 运用所学知识解决实际问题

## 教学重点
- 重点概念的理解和应用
- 实践技能的掌握
- 问题解决能力的培养

## 教学过程
### 1. 导入新课（5分钟）
- 复习上节课内容
- 引入新课主题：${subject}相关内容

### 2. 新课讲解（20分钟）
- 概念讲解和定义
- 示例演示和说明
- 师生互动讨论

### 3. 课堂练习（15分钟）
- 小组讨论活动
- 个人练习作业
- 教师巡回指导

### 4. 总结归纳（5分钟）
- 知识要点总结
- 作业布置和说明

## 教学反思
- 教学效果评估
- 学生反馈收集
- 改进建议总结`;
      break;
      
    case 'exam_questions':
      // 根据学科生成不同的考试题目
      const examQuestions = generateSubjectExamQuestions(subject, grade);
      mockDocument = `# ${title}

## 考试说明
- 考试时间：60分钟
- 总分：100分
- 题型：选择题、填空题、解答题

## 试题内容

${examQuestions}

## 参考答案
（此处提供标准答案）`;
      break;
      
    case 'study_guide':
      mockDocument = `# ${title}

## 学习目标
通过本学习指南，帮助学生：
- 系统掌握${subject}知识体系
- 掌握有效的学习方法
- 提高学习效率和成绩

## 学习要点
### 1. 基础概念
- 核心定义和基本特征
- 分类方法和应用场景
- 重要公式和定理

### 2. 重点难点
- 难点分析和解决方法
- 常见错误和注意事项
- 易混淆概念辨析

### 3. 学习方法
- 理论结合实践
- 多做练习和总结
- 及时复习和巩固

## 学习资源
- 推荐教材：《${subject}学习指南》
- 在线课程：相关网络课程
- 实践项目：动手操作练习

## 学习计划
- 第一周：基础理论学习
- 第二周：实践操作练习
- 第三周：综合应用训练
- 第四周：复习巩固提高

## 学习建议
1. 制定合理的学习计划
2. 注重理论与实践结合
3. 多与同学交流讨论
4. 及时总结学习心得`;
      break;
      
    default:
      mockDocument = `# ${title}

## 文档内容
${requirements || '教育文档内容'}

## 生成说明
*此文档由AI智能生成，仅供参考。*

## 主要内容
1. 概述
2. 详细说明
3. 应用场景
4. 总结

---
生成时间：${new Date().toLocaleString()}
文档类型：${docType}
格式：markdown`;
  }
  
  return {
    success: true,
    data: {
      document: mockDocument,
      metadata: {
        title: title,
        type: docType,
        format: 'markdown',
        subject: subject,
        grade: grade,
        generated_at: new Date().toISOString()
      }
    }
  };
}

// 根据学科生成考试题目
function generateSubjectExamQuestions(subject, grade) {
  const questions = {
    '数学': {
      '小学': `### 一、选择题（每题5分，共30分）
1. 下列哪个数是质数？（  ）
   A. 4    B. 6    C. 7    D. 8

2. 一个长方形的长是8厘米，宽是6厘米，它的面积是（  ）
   A. 14平方厘米    B. 28平方厘米    C. 48平方厘米    D. 56平方厘米

3. 下列分数中最大的是（  ）
   A. 1/2    B. 2/3    C. 3/4    D. 4/5

### 二、填空题（每题4分，共20分）
1. 25 × 4 = ________
2. 1米 = ________厘米
3. 一个圆的直径是10厘米，它的周长约是________厘米

### 三、解答题（每题25分，共50分）
1. 小明有12个苹果，他分给3个朋友，每人分到几个苹果？还剩几个？

2. 一个正方形的边长是5厘米，求它的周长和面积。`,

      '初中': `### 一、选择题（每题5分，共30分）
1. 下列哪个是一元二次方程？（  ）
   A. x + 2 = 5    B. x² + 2x + 1 = 0    C. 2x + y = 3    D. x³ = 8

2. 在直角三角形中，两直角边分别为3和4，则斜边长为（  ）
   A. 5    B. 6    C. 7    D. 8

3. 函数y = 2x + 1的图像经过点（  ）
   A. (0, 0)    B. (0, 1)    C. (1, 0)    D. (1, 1)

### 二、填空题（每题4分，共20分）
1. 解方程：2x + 3 = 7，x = ________
2. 一个圆的半径是5厘米，它的面积是________平方厘米
3. 函数y = x² - 4x + 3的对称轴是________

### 三、解答题（每题25分，共50分）
1. 解一元二次方程：x² - 5x + 6 = 0

2. 已知函数y = ax² + bx + c经过点(1, 2)、(2, 3)、(3, 6)，求a、b、c的值。`,

      '高中': `### 一、选择题（每题5分，共30分）
1. 已知函数f(x) = ln(x + 1)，则f'(x) = （  ）
   A. 1/(x + 1)    B. 1/x    C. x + 1    D. ln(x + 1)

2. 在等差数列{an}中，a₁ = 2，d = 3，则a₁₀ = （  ）
   A. 29    B. 30    C. 31    D. 32

3. 复数z = 3 + 4i的模为（  ）
   A. 5    B. 7    C. 12    D. 25

### 二、填空题（每题4分，共20分）
1. 求极限：lim(x→0) sinx/x = ________
2. 已知向量a = (1, 2)，b = (3, 4)，则a·b = ________
3. 函数y = e^x的导数是________

### 三、解答题（每题25分，共50分）
1. 求函数f(x) = x³ - 3x² + 2的极值点和极值

2. 证明：对于任意实数x，都有sin²x + cos²x = 1`
    },

    '英语': {
      '小学': `### 一、选择题（每题5分，共30分）
1. What's your name? （  ）
   A. I'm fine    B. My name is Tom    C. Thank you    D. Goodbye

2. How old are you? （  ）
   A. I'm 10 years old    B. I'm a student    C. I like English    D. I'm from China

3. What color is the sky? （  ）
   A. Red    B. Blue    C. Green    D. Yellow

### 二、填空题（每题4分，共20分）
1. I ________ (be) a student.
2. She ________ (like) reading books.
3. They ________ (go) to school every day.

### 三、解答题（每题25分，共50分）
1. 用英语写一篇关于"My Family"的短文（不少于50个单词）

2. 翻译下列句子：
   - 你好，我叫小明。
   - 我喜欢学习英语。`,

      '初中': `### 一、选择题（每题5分，共30分）
1. If it ________ tomorrow, we won't go to the park. （  ）
   A. rains    B. will rain    C. rained    D. is raining

2. The book ________ by him last week. （  ）
   A. was written    B. wrote    C. writes    D. is written

3. She has been studying English ________ 2018. （  ）
   A. since    B. for    C. from    D. in

### 二、填空题（每题4分，共20分）
1. He ________ (finish) his homework before dinner.
2. The movie ________ (show) in the cinema next week.
3. I ________ (study) English for three years.

### 三、解答题（每题25分，共50分）
1. 用英语写一篇关于"Environmental Protection"的短文（不少于100个单词）

2. 完成对话：
   A: Excuse me, could you tell me the way to the library?
   B: ________
   A: Thank you very much.
   B: ________`,

      '高中': `### 一、选择题（每题5分，共30分）
1. It was not until midnight ________ he finished his work. （  ）
   A. that    B. when    C. which    D. what

2. The professor, along with his students, ________ the experiment. （  ）
   A. is conducting    B. are conducting    C. conducts    D. conduct

3. ________ the weather is fine, we will go hiking. （  ）
   A. Unless    B. If    C. Although    D. Because

### 二、填空题（每题4分，共20分）
1. The project ________ (complete) by the end of this month.
2. He suggested that we ________ (go) to the museum.
3. It is high time that we ________ (take) action.

### 三、解答题（每题25分，共50分）
1. 用英语写一篇关于"Technology and Society"的议论文（不少于150个单词）

2. 分析下列句子的语法结构：
   - Having finished his homework, he went to bed.
   - It is believed that climate change is caused by human activities.`
    },

    '语文': {
      '小学': `### 一、选择题（每题5分，共30分）
1. 下列词语中加点字的读音完全正确的一项是（  ）
   A. 参差(cān chā)    B. 踌躇(chóu chú)    C. 蹒跚(pán shān)    D. 徘徊(pái huái)

2. 下列句子中没有语病的一项是（  ）
   A. 我们要发扬和继承优良传统
   B. 通过这次活动，使我受到了教育
   C. 我们要努力学习，争取取得好成绩
   D. 这个问题值得我们去深思熟虑

3. 下列成语使用正确的一项是（  ）
   A. 他做事总是半途而废，真是令人刮目相看
   B. 这个问题很复杂，我们要集思广益
   C. 他的文章写得很好，真是妙笔生花
   D. 我们要实事求是，不能弄虚作假

### 二、填空题（每题4分，共20分）
1. 古诗文默写：床前明月光，________。
2. 成语填空：我们要________，不能骄傲自满。
3. 词语搭配：________的阳光洒在大地上。

### 三、解答题（每题25分，共50分）
1. 阅读下面的短文，回答问题：
   （短文内容略）
   问题：这篇文章主要讲了什么？

2. 以"我的理想"为题，写一篇不少于300字的作文。`,

      '初中': `### 一、选择题（每题5分，共30分）
1. 下列词语中加点字的读音完全正确的一项是（  ）
   A. 憧憬(chōng jǐng)    B. 憧憬(chōng jīng)    C. 憧憬(chōng jìng)    D. 憧憬(chōng jīng)

2. 下列句子中修辞手法判断正确的一项是（  ）
   A. "春风又绿江南岸"运用了比喻
   B. "白发三千丈"运用了夸张
   C. "问君能有几多愁"运用了设问
   D. "山重水复疑无路"运用了对偶

3. 下列文学常识表述正确的一项是（  ）
   A. 《红楼梦》的作者是曹雪芹
   B. 《西游记》的作者是吴承恩
   C. 《水浒传》的作者是施耐庵
   D. 《三国演义》的作者是罗贯中

### 二、填空题（每题4分，共20分）
1. 古诗文默写：________，江春入旧年。
2. 成语填空：我们要________，不能________。
3. 词语搭配：________的歌声在校园里回荡。

### 三、解答题（每题25分，共50分）
1. 阅读下面的文言文，翻译并回答问题：
   （文言文内容略）

2. 以"青春"为题，写一篇不少于500字的作文。`,

      '高中': `### 一、选择题（每题5分，共30分）
1. 下列词语中加点字的读音完全正确的一项是（  ）
   A. 踌躇(chóu chú)    B. 踌躇(chóu chū)    C. 踌躇(chóu chǔ)    D. 踌躇(chóu chù)

2. 下列句子中修辞手法判断正确的一项是（  ）
   A. "人生如梦"运用了比喻
   B. "白发三千丈"运用了夸张
   C. "问君能有几多愁"运用了设问
   D. "山重水复疑无路"运用了对偶

3. 下列文学常识表述正确的一项是（  ）
   A. 《诗经》是我国最早的诗歌总集
   B. 《楚辞》是屈原的代表作
   C. 《史记》是司马迁的史学著作
   D. 《汉书》是班固的史学著作

### 二、填空题（每题4分，共20分）
1. 古诗文默写：________，________，此事古难全。
2. 成语填空：我们要________，不能________。
3. 词语搭配：________的月光洒在________的大地上。

### 三、解答题（每题25分，共50分）
1. 阅读下面的现代文，分析文章的主旨和写作特色：
   （现代文内容略）

2. 以"责任"为题，写一篇不少于800字的议论文。`
    }
  };

  return questions[subject]?.[grade] || questions['数学']['小学'];
}

// 1. 生成技术文档
router.post('/generate/technical', async (req, res) => {
  try {
    const { title, content, docType, format, requirements, subject, grade } = req.body;
    
    // 支持新旧两种参数格式
    const documentTitle = title || '教育文档';
    const documentContent = content || requirements || '请生成教育文档';
    const documentType = docType || 'general';
    const documentFormat = format || 'markdown';
    
    if (!documentTitle || !documentContent) {
      return res.status(400).json({
        success: false,
        message: '标题和内容不能为空'
      });
    }
    
    const inputs = {
      query: `生成${documentType}文档`,
      title: documentTitle,
      content: documentContent,
      format: documentFormat,
      docType: documentType,
      subject: subject || '通用',
      grade: grade || '通用',
      requirements: documentContent
    };
    
    const result = await callDifyWorkflow(inputs);
    
    if (result.success === false) {
      res.status(500).json({
        success: false,
        message: result.message || '文档生成失败',
        error: result.error
      });
    } else {
      res.json({
        success: true,
        data: {
          document: result.answer || result.data || result,
          metadata: {
            title: documentTitle,
            type: documentType,
            format: documentFormat,
            subject: subject || '通用',
            grade: grade || '通用',
            generated_at: new Date().toISOString()
          }
        }
      });
    }
  } catch (error) {
    console.error('生成技术文档失败:', error);
    res.status(500).json({
      success: false,
      message: '服务器内部错误'
    });
  }
});

// 2. 生成API文档
router.post('/generate/api', async (req, res) => {
  try {
    const { apiSpec, format, style } = req.body;
    
    if (!apiSpec) {
      return res.status(400).json({
        success: false,
        message: 'API规范不能为空'
      });
    }
    
    const inputs = {
      query: '生成API文档',
      apiSpec: apiSpec,
      format: format || 'markdown',
      style: style || 'standard'
    };
    
    const result = await callDifyWorkflow(inputs);
    
    res.json({
      success: true,
      data: {
        document: result.answer || result.data,
        metadata: {
          format,
          style,
          generatedAt: new Date().toISOString()
        }
      }
    });
    
  } catch (error) {
    console.error('生成API文档失败:', error);
    res.status(500).json({
      success: false,
      message: error.message
    });
  }
});

// 3. 生成业务报告
router.post('/generate/business', async (req, res) => {
  try {
    const { data, reportType, period, format } = req.body;
    
    if (!data) {
      return res.status(400).json({
        success: false,
        message: '业务数据不能为空'
      });
    }
    
    const inputs = {
      query: `生成${reportType || '业务'}报告`,
      data: data,
      reportType: reportType || 'business',
      period: period || 'monthly',
      format: format || 'markdown'
    };
    
    const result = await callDifyWorkflow(inputs);
    
    res.json({
      success: true,
      data: {
        document: result.answer || result.data,
        metadata: {
          reportType,
          period,
          format,
          generatedAt: new Date().toISOString()
        }
      }
    });
    
  } catch (error) {
    console.error('生成业务报告失败:', error);
    res.status(500).json({
      success: false,
      message: error.message
    });
  }
});

// 4. 基于文件生成文档
router.post('/generate/from-file', verifyToken, upload.single('file'), async (req, res) => {
  try {
    if (!req.file) {
      return res.status(400).json({
        success: false,
        message: '请上传文件'
      });
    }
    
    const { docType, format } = req.body;
    const filePath = req.file.path;
    const fileName = req.file.originalname;
    
    // 读取文件内容
    let fileContent;
    try {
      fileContent = await fs.readFile(filePath, 'utf8');
    } catch (error) {
      // 如果是二进制文件，转换为base64
      const buffer = await fs.readFile(filePath);
      fileContent = buffer.toString('base64');
    }
    
    const inputs = {
      query: `基于文件生成${docType || '文档'}`,
      fileName: fileName,
      fileContent: fileContent,
      docType: docType || 'general',
      format: format || 'markdown'
    };
    
    const result = await callDifyWorkflow(inputs);
    
    // 清理上传的文件
    await fs.remove(filePath);
    
    res.json({
      success: true,
      data: {
        document: result.answer || result.data,
        metadata: {
          fileName,
          docType,
          format,
          generatedAt: new Date().toISOString()
        }
      }
    });
    
  } catch (error) {
    console.error('基于文件生成文档失败:', error);
    res.status(500).json({
      success: false,
      message: error.message
    });
  }
});

// 5. 批量生成文档
router.post('/generate/batch', async (req, res) => {
  try {
    const { documents, template, format } = req.body;
    
    if (!documents || !Array.isArray(documents) || documents.length === 0) {
      return res.status(400).json({
        success: false,
        message: '文档列表不能为空'
      });
    }
    
    const results = [];
    
    for (const doc of documents) {
      try {
        const inputs = {
          query: `使用模板${template || 'default'}生成文档`,
          title: doc.title,
          content: doc.content,
          template: template || 'default',
          format: format || 'markdown'
        };
        
        const result = await callDifyWorkflow(inputs);
        
        results.push({
          title: doc.title,
          success: true,
          document: result.answer || result.data
        });
      } catch (error) {
        results.push({
          title: doc.title,
          success: false,
          error: error.message
        });
      }
    }
    
    res.json({
      success: true,
      data: {
        results,
        total: documents.length,
        successful: results.filter(r => r.success).length,
        failed: results.filter(r => !r.success).length,
        generatedAt: new Date().toISOString()
      }
    });
    
  } catch (error) {
    console.error('批量生成文档失败:', error);
    res.status(500).json({
      success: false,
      message: error.message
    });
  }
});

// 6. 获取文档模板列表
router.get('/templates', async (req, res) => {
  try {
    const templates = [
      {
        id: 'technical',
        name: '技术文档模板',
        description: '适用于API文档、技术手册等',
        fields: ['title', 'content', 'format']
      },
      {
        id: 'business',
        name: '业务报告模板',
        description: '适用于月度报告、分析报告等',
        fields: ['data', 'reportType', 'period', 'format']
      },
      {
        id: 'api',
        name: 'API文档模板',
        description: '适用于接口文档、SDK文档等',
        fields: ['apiSpec', 'format', 'style']
      },
      {
        id: 'general',
        name: '通用文档模板',
        description: '适用于一般文档生成',
        fields: ['title', 'content', 'format']
      }
    ];
    
    res.json({
      success: true,
      data: templates
    });
    
  } catch (error) {
    console.error('获取模板列表失败:', error);
    res.status(500).json({
      success: false,
      message: error.message
    });
  }
});

// 7. 健康检查
router.get('/health', async (req, res) => {
  try {
    console.log('开始健康检查...');
    
    // 测试Dify API连接
    const testResult = await callDifyWorkflow({
      query: '测试连接',
      test: true
    });
    
    // 检查是否使用了备用方案
    const isUsingMock = testResult.answer && testResult.answer.includes('生成时间');
    
    if (isUsingMock) {
      // 使用备用方案，服务仍然可用
      res.json({
        success: true,
        data: {
          status: 'healthy',
          difyConnection: 'disconnected',
          usingMock: true,
          message: 'Dify API不可用，使用备用方案',
          timestamp: new Date().toISOString()
        }
      });
    } else {
      // Dify API正常工作
      res.json({
        success: true,
        data: {
          status: 'healthy',
          difyConnection: 'connected',
          usingMock: false,
          message: '所有服务正常',
          timestamp: new Date().toISOString()
        }
      });
    }
    
  } catch (error) {
    console.error('健康检查失败:', error);
    res.status(503).json({
      success: false,
      data: {
        status: 'unhealthy',
        difyConnection: 'unknown',
        error: error.message,
        timestamp: new Date().toISOString()
      }
    });
  }
});

module.exports = router;